
#ifndef _ABS_APPLICATION_H_
#define _ABS_APPLICATION_H_

#include "CoreApi.hpp"
#include "AbstractManager.hpp"
#include "AbstractObject.hpp"
#include <QApplication>

namespace NSCore {

	class COREAPI AbstractApplication : 
		public QApplication ,
		public AbstractObject
	{
		Q_OBJECT
	public:
		AbstractApplication(int argc, char* argv[]);
		virtual ~AbstractApplication();

	public:
		virtual void registerManager(QString name, AbstractObject* object);
		virtual AbstractObject* getManager(QString name);

	public: /*override*/
		virtual inline QString className() override { return "AbstractApplication"; };
	protected:
		QMap<QString /*name*/, NSCore::AbstractObject* /*Object*/> m_objects;


	};

}

#endif // !_ABS_APPLICATION_H_




